#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
namespace Cephei.QL.Math
{
    /// <summary> 
	/// ! Initially the class will contain one indexed curve
	/// </summary>
    [Guid ("7B185F69-5DB1-4a78-802C-FDDD6299834C"),ComVisible(true)]
	public interface ISampledCurve 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Boolean Empty {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double FirstDerivativeAtCenter {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.Math.IArray Grid {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double GridValue(UInt64 i);
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve Regrid(Cephei.QL.Math.IArray new_grid);
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve RegridLogGrid(Double min, Double max);
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve ScaleGrid(Double s);
        /// <summary> 
		/// 
		/// </summary>
		 Double SecondDerivativeAtCenter {get;}
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve SetGrid(Cephei.QL.Math.IArray prm1);
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve SetLogGrid(Double min, Double max);
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve SetValues(Cephei.QL.Math.IArray prm1);
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve ShiftGrid(Double s);
        /// <summary> 
		/// 
		/// </summary>
		 UInt64 Size {get;}
        /// <summary> 
		/// 
		/// </summary>
		 ISampledCurve Swap(Cephei.QL.Math.ISampledCurve prm1);
        /// <summary> 
		/// 
		/// </summary>
		 Double Value(UInt64 i);
        /// <summary> 
		/// 
		/// </summary>
		 Double ValueAtCenter {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.Math.IArray Values {get;}
    }   

    /// <summary> 
	/// ! Initially the class will contain one indexed curve Factory
	/// </summary>
   	[ComVisible(true)]
    public interface ISampledCurve_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    ISampledCurve Create (Cephei.QL.Math.IArray grid);
        /// <summary> 
		/// 
		/// </summary>
	    ISampledCurve Create (Microsoft.FSharp.Core.FSharpOption<UInt64> gridSize);
    }
}

